
#include "Nombre.h"

Nombre::Nombre() : Parametre() {

}

// Permet de passer en paramètre un nombre du code Lobo et on vérifie que le nombre correspond bien à la grammaire
// Sinon une exception est levé et le nombre est égal a 0.

void Nombre::setParametre(string nombre) {
	int err;
	regex_t preg;
	const char *str_request = nombre.c_str();
	const char *str_regex = "^[0-9]+[0-9]*$";

	err = regcomp (&preg, str_regex, REG_NOSUB | REG_EXTENDED);
	if (err == 0)
	{
		int match;

		match = regexec (&preg, str_request, 0, NULL, 0);
		regfree (&preg);
		try{
		if (match == 0)
		{
			m_nombre = nombre;
		}else{
			throw 0;
		}
		}catch(int n){
			std::cerr << nombre+" n'est pas un nombre valide" <<std::endl;
			m_nombre="0";
		}
	}
}

string Nombre::getNombre() const {
	return m_nombre;
}

// Permet de récuperer le nombre et de l'inclure dans le code C++

string Nombre::toString() const {
	return m_nombre;
}

Nombre::~Nombre(){
}

